package com.lecture.java8.drools;//package com.lecture.java8.drools;
//
//import org.kie.api.KieBase;
//import org.kie.api.KieServices;
//import org.kie.api.builder.KieBuilder;
//import org.kie.api.builder.KieFileSystem;
//import org.kie.api.io.ResourceType;
//import org.kie.api.runtime.KieContainer;
//import org.kie.api.runtime.KieSession;
//import org.kie.internal.utils.KieHelper;
//
//import java.io.File;
//import java.io.FileWriter;
//import java.io.IOException;
//
//public class Demo1 {
//    public static void main(String[] args) {
//        /*KieServices kieServices = KieServices.Factory.get();
//        KieContainer kieContainer = kieServices.getKieClasspathContainer();
//        KieSession kieSession = kieContainer.newKieSession();*/
//       try {
//           demo5();
//       } catch (Exception e) {
//           e.printStackTrace();
//       }
//    }
//
//    public static void demo5() {
//        String rule = "package rules.demo1\n" +
//                "\n" +
//                "import com.lecture.java8.drools.School;\n" +
//                "import com.lecture.java8.drools.Person;\n" +
//                "\n" +
//                "rule \"demo1\"\n" +
//                "    when\n" +
//                "        $s:School();\n" +
//                "        $p:Person(getClassName() contains $s.getClassName());\n" +
//                "    then\n" +
//                "        System.out.println(\"使用了demo1配置\");\n" +
//                "    end";
//        writer(rule);
//        KieSession kieSession = KieSessionFactory.getKieSession();
//        KieSessionFactory.triggerRulesScan();
//        kieSession = KieSessionFactory.getKieSession();
//        Person person = new Person();
//        person.setAge(18);
//        person.setName("张三");
//        person.setClassName("一班");
//
//        School school = new School();
//        school.setClassName("一班");
//        school.setClassCount("10");
//
//        kieSession.insert(person);
//        kieSession.insert(school);
//        kieSession.fireAllRules();
//    }
//
//    public static void demo4() {
//        String rule = "package rules.demo1\n" +
//                "\n" +
//                "import com.lecture.java8.drools.School;\n" +
//                "import com.lecture.java8.drools.Person;\n" +
//                "\n" +
//                "rule \"demo1\"\n" +
//                "    when\n" +
//                "        $s:School();\n" +
//                "        $p:Person(getClassName() contains $s.getClassName());\n" +
//                "    then\n" +
//                "        System.out.println(\"使用了demo1配置\");\n" +
//                "    end";
//        KieServices kieServices = KieServices.Factory.get();
//        KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
//        kieFileSystem.write("rules.drl", rule); // 加载规则
//        KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
//        kieBuilder.buildAll();
//        KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
//
//
//        KieSession kieSession = KieSessionFactory.getKieSession();
//
//    }
//
//    public static void demo3() {
//        long start = System.currentTimeMillis();
//        String rule = "package rules.demo1\n" +
//                "\n" +
//                "import com.lecture.java8.drools.School;\n" +
//                "import com.lecture.java8.drools.Person;\n" +
//                "\n" +
//                "rule \"demo1\"\n" +
//                "    when\n" +
//                "        $s:School();\n" +
//                "        $p:Person(getClassName() contains $s.getClassName());\n" +
//                "    then\n" +
//                "        System.out.println(\"使用了demo1配置\");\n" +
//                "    end";
//        // 创建 KieServices 实例
//        KieServices kieServices = KieServices.Factory.get();
//
//// 创建 KieFileSystem 实例并加载规则
//        KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
//        kieFileSystem.write("rules.drl", rule); // 加载规则
//        kieServices.newKieBuilder(kieFileSystem).buildAll();
//
//// 创建 KieContainer
//        KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
//
//// 从 KieContainer 中获取 KieSession
//        KieSession kieSession = kieContainer.newKieSession();
//
//// 使用 KieSession 进行规则评估
//        Person person = new Person();
//        person.setAge(18);
//        person.setName("张三");
//        person.setClassName("一班");
//
//        School school = new School();
//        school.setClassName("一班");
//        school.setClassCount("10");
//
//        kieSession.insert(person);
//        kieSession.insert(school);
//        kieSession.fireAllRules();
//        long stop = System.currentTimeMillis();
//        System.out.println(stop - start);
//    }
//
//
//    public static void demo2() {
//        long start = System.currentTimeMillis();
//        String rule = "package rules.demo1\n" +
//                "\n" +
//                "import com.lecture.java8.drools.School;\n" +
//                "import com.lecture.java8.drools.Person;\n" +
//                "\n" +
//                "rule \"demo1\"\n" +
//                "    when\n" +
//                "        $s:School();\n" +
//                "        $p:Person(getClassName() contains $s.getClassName());\n" +
//                "    then\n" +
//                "        System.out.println(\"使用了demo1配置\");\n" +
//                "    end";
//        KieBase kieBase = new KieHelper().addContent(rule, ResourceType.DRL).build();
//        KieSession kieSession = kieBase.newKieSession();
//        long stop = System.currentTimeMillis();
//
//        System.out.println(stop - start);
//        Person person = new Person();
//        person.setAge(18);
//        person.setName("张三");
//        person.setClassName("一班");
//
//        School school = new School();
//        school.setClassName("一班");
//        school.setClassCount("10");
//
//        kieSession.insert(person);
//        kieSession.insert(school);
//
//        kieSession.fireAllRules();
//        kieSession.dispose();
//
//        stop = System.currentTimeMillis();
//        System.out.println(stop - start);
//
//    }
//
//    public static void demo1(KieSession kieSession) {
//
//
//        Person person = new Person();
//        person.setAge(18);
//        person.setName("张三");
//        person.setClassName("一班");
//
//        School school = new School();
//        school.setClassName("一班");
//        school.setClassCount("10");
//
//        kieSession.insert(person);
//        kieSession.insert(school);
//
//        int i = kieSession.fireAllRules();
//        System.out.println("执行了多少条" + i);
//
//        kieSession.dispose();
//    }
//
//    public static void writer(String content) {
//        // 目标资源文件路径
//        String resourcePath = "src/main/resources/rules/demo55.drl";
//        // 创建目标文件对象
//        File file = new File(resourcePath);
//        try {
//            // 创建文件父目录（如果不存在）
//            file.getParentFile().mkdirs();
//
//            // 创建文件写入器
//            FileWriter writer = new FileWriter(file);
//
//            // 写入文件内容
//            writer.write(content);
//
//            // 关闭写入器
//            writer.close();
//
//            System.out.println("File written successfully to: " + resourcePath);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//}
